gadget: Add api to get the border allocation
authorMatthias Clasen <mclasen@redhat.com>
Wed, 16 Dec 2015 02:55:22 +0000 (21:55 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 16 Dec 2015 02:58:45 +0000 (21:58 -0500)
This can be useful for giving input windows the right size.

gtk/gtkcssgadget.c
gtk/gtkcssgadgetprivate.h

index f1a0e975d078ff6b646dc0cb3ca2f63b60926f83..0be480f8fdbd08e2145ef922dadcbf4d26f72bf3 100644 (file)
@@ -670,3 +670,31 @@ gtk_css_node_style_changed_for_widget (GtkCssNode  *node,
   _gtk_bitmask_free (changes);
 }
 
+void
+gtk_css_gadget_get_border_allocation (GtkCssGadget  *gadget,
+                                      GtkAllocation *allocation,
+                                      int           *baseline)
+{
+  GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
+  GtkBorder margin;
+
+  g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
+
+  get_box_margin (gtk_css_gadget_get_style (gadget), &margin);
+
+  if (allocation)
+    {
+      allocation->x = priv->allocated_size.x + margin.left;
+      allocation->y = priv->allocated_size.y + margin.top;
+      allocation->width = priv->allocated_size.width - margin.left - margin.right;
+      allocation->height = priv->allocated_size.height - margin.top - margin.bottom;
+    }
+  if (baseline)
+    {
+      if (priv->allocated_baseline >= 0)
+        *baseline = priv->allocated_baseline - margin.top;
+      else
+        *baseline = -1;
+    }
+}
+
index 4000724ddbda9f14fb638b6ca5e1ad7c7687568f..9d4b6e40ca608867daa726b025bb27812f2a3863 100644 (file)
@@ -97,6 +97,10 @@ void            gtk_css_gadget_allocate                 (GtkCssGadget
 void            gtk_css_gadget_draw                     (GtkCssGadget           *gadget,
                                                          cairo_t                *cr);
 
+void            gtk_css_gadget_get_border_allocation    (GtkCssGadget           *gadget,
+                                                         GtkAllocation          *allocation,
+                                                         int                    *baseline);
+
 G_END_DECLS
 
 #endif /* __GTK_CSS_GADGET_PRIVATE_H__ */